Arduino 语言
Arduino 是由 C/C++ 混合编写而成。Arduino 语言也继承了 C/C++ 语言的语法。通常所说的 Arduino 语言,是指 Arduino 核心库文件提供的各种应用程序编程接口(Application Programming Interface,简称API)的集合。
代码示例
Arduino 的基本程序由 setup()
和 loop()
组成,这两个函数是必须的。可以发现 Arduino 不像 C/C++ 语言一样包含 main()
函数。但是它也可以有头文件和自定义函数等要素。
1 | void setup() |
1 | /* |
时间函数 Time Functions
delay():
- 描述:将程序暂停给定参数的时间量(以毫秒为单位)
- 函数原型:delay(ms)
- 参数:ms - 暂停的毫秒数
- 返回值:无
millis():
**pinMode()**:
- 描述:将指定的引脚配置为输入或者输出的模式
- 函数原型:pinModel(pin,mode)
- 参数:
- pin:要设置其模式的引脚编号
- mode:INPUT(输入模式),OUTPUT(输出模式),INPUT_PULLUP(上拉输入模式)
- 返回值:无
digitalRead():
- 描述:读取指定数字引脚的值
- 函数原型:digitalRead(pin)
- 参数:要读取的数字引脚的编号
- 返回值:HIGH(1),LOW(0)
**digitalWrite()**:
analogWrite():
- 描述:在指定引脚输出指定占空比的 PWM 方波
- 函数原型:analogWrite(pin,value)
- 参数:
- pin:输出引脚
- value:占空比,介于 0 - 255 之间
- 返回值:无
analogRead():
- 描述:读取指定引脚的模拟信号值
- 函数原型:analogRead(pin)
- 参数:
- pin:要读取的模拟引脚的编号
- 返回值:无
在 analogWrite() 和 analogRead() 函数内部,已经完成了引脚的初始化,因此不用在 Setup() 函数中进行初始化操作。
数学函数 Math Functions
- map():
- 描述:将数字从一个范围重新映射到另一个范围。
- 函数原型:map(value, fromLow, fromHigh, toLow, toHigh)
- 参数:
- value:要映射的数
- fromLow:当前值范围的下限
- fromHigh:当前值范围的下限
- toLow:目标值范围的下限
- toHigh:目标值范围的上限
- 返回值:映射后的值
1
2
3
4
5
6
7
8
9/* Map an analog value to 8 bits (0 to 255) */
void setup() {}
void loop()
{
int val = analogRead(0);
val = map(val, 0, 1023, 0, 255);
analogWrite(9, val);
}
注意:不会将值限制在该范围内,因为超出范围的值有时是有意义且有用的。如果需要对范围进行限制,则可以在此函数之前或之后使用 constrain() 函数
- constrain():
- 描述:将数字约束在一个范围内。
- 函数原型:constrain(x, a, b)
- 参数:
- x:要约束的数字
- a:范围的下限
- b:范围的上限
- 返回值:
- 如果 x 在(a, b) 范围内:返回 x
- 如果 x 小于 a:返回 a
- 如果 x 大于 b:返回 b
通信串口 Serial 的函数
begin():
- 描述:设置串行数据传输的数据速率,以每秒位数(波特)为单位。
- 函数原型:Serial.begin(speed) / Serial.begin(speed, config)
- 参数:
- speed:比特每秒(波特) - long
- config:设置数据,奇偶校验和停止位
- 返回值:无
available():
- 描述:获取可从串行端口读取的字节数(字符数)。
- 函数原型: Serial.available()
- 参数:无
- 返回值:可读的字节数。
read():
- 描述:读取传入的串行数据。
- 函数原型:Serial.read()
- 参数:无
- 返回值:可用的传入串行数据的第一个字节(如果没有可用的数据,则为-1) - int
print():
- 描述:在串行口以人们可以看懂的 ASSCII 码的形式打印数据。
- 函数原型:Serial.print(val) / Serial.print(val, format)
- 参数:
- val:要打印的值。
- format:可选值,选择打印出的参数的类型。如:BIN(binary, or base 2), OCT(octal, or base 8), DEC(decimal, or base 10), HEX(hexadecimal, or base 16) 。
- 返回值:size_t:print() 返回写入的字节数,但读取该数字是可选的。
1
2
3
4
5
6
7
8
9
10
11
12
13Serial.print(78, BIN) gives "1001110"
Serial.print(78, OCT) gives "116"
Serial.print(78, DEC) gives "78"
Serial.print(78, HEX) gives "4E"
Serial.print(1.23456, 0) gives "1"
Serial.print(1.23456, 2) gives "1.23"
Serial.print(1.23456, 4) gives "1.2346"
**println()**:
- 描述:将数据作为人类可读的ASCII文本打印到串行端口,后跟回车符(ASCII 13或’\ r’)和换行符(ASCII 10或’\ n’)
- 函数原型:Serial.println(val) / Serial.println(val, format)
- 参数:同 print()
- 返回值:size_t:print() 返回写入的字节数,但读取该数字是可选的。
**parseInt()**:
- 描述:查找传入串行流中的下一个有效整数。
- 函数原型:Serial.parseInt(char skipChar)
- 参数:
- skipChar:用于跳过搜索中指定的字符。例如,用于跳过数千个分频器。
- 返回值:long:下一个无效的整数